package com.zzyy.study.annotation;

import java.lang.annotation.*;


/**
 * 唯一key生成要做到参数可选，那么用注解的方式推荐，注解如下RequestKeyParam.java
 *
 * 它作用是配合之前的注解RequestLock使用的，我们可以任意设置我们的key，
 *
 * 唯一key业务规则：
 * 比如userName是张三，userPhone是123456，那么完整的key就是"张三&123456"，最后再加上redis锁前缀，就组成了一个唯一key
 * 假如自己的entity有10个字段，我只选10各个中的3个作为拼装，那被选中的字段就在字段上面加RequestKeyParam注解即可。
 */
@Target({ElementType.METHOD, ElementType.PARAMETER, ElementType.FIELD})
@Retention(RetentionPolicy.RUNTIME)
@Documented
@Inherited
public @interface RequestKeyParam {


    /**
     * 加上RequestKeyParam这个注解可以将选定的参数设置为唯一判断key
     *
     * @RequestKeyParam 可以放在方法的参数上，也可以放在对象的属性上，
     * 所以程序需要进行两次判断，
     * 一次是获取方法上的注解，
     * 一次是获取对象里面属性上的注解。
     */
}

